package com.example.demo.mapper;

import com.example.demo.entity.Order;
import com.example.demo.entity.vo.OrderVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface OrderMapper {
    /**
     * 查询订单列表
     *
     * @param userId    用户ID
     * @param orderId   订单ID
     */
    /**
     * 查询订单
     *
     * @param userId    根据用户ID查询
     * @param orderId   根据订单ID查询
     * @return          订单列表
     */
    List<OrderVO> getList(@Param("userId") Integer userId,
                          @Param("orderId") Integer orderId,
                          @Param("pSize") Integer pSize,
                          @Param("pIndex") Integer pIndex);

    /**
     * 添加订单
     * 将新添加的记录的 自增id 赋值给 Order 的 id
     *
     * @param order     订单
     * @return          受影响的行数
     */
    int add(Order order);

    /**
     * 更新订单状态
     * 管理员: 更新所有用户的订单状态 (0-未制作, 1-制作中, 2-已完成)
     * 用户: 更新自己的订单状态(-1-取消订单)
     *
     * @param orderId   订单ID
     * @param userId    用户ID
     * @param state     订单状态
     * @return          受影响的行数
     */
    int updateState(@Param("orderId") Integer orderId,
                    @Param("userId") Integer userId,
                    @Param("state") Integer state);


    int getCount(@Param("userId") Integer userId);
}
